package com.cskaoyan.javase.array._5operation._1get;

import jdk.nashorn.internal.objects.NativeNumber;

/**
 * 获取数组中的最值
 * @since 10:49
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // 给出一个int数组,求最值
        int[] arr = {1, 23, 32, 400, 324, 23, 12, -12, 32, 0, 11};
        System.out.println(getMaxValue(arr));
        System.out.println(getMinValue(arr));
    }

    // 求最大值
    /*
        改进这个方法,让它能够接收null数组和长度为0的数组的输入
     */
    public static Integer getMaxValue(int[] arr) {
        // 做判断
        if (arr == null){
            System.out.println("是一个null数组,请从新输入!");
            // 这里是不太好给出一个返回值的
            /*
                要想解决这个问题,我们目前的知识点是不太够用的.如果结合后面的知识点,主要可以有两种做法:
                1.不用基本数据类型做返回值类型,而是使用引用数据类型(包装类)
                    Integer是int类型的包装类型
                    包装类型可以认为是将基本数据类型封装成了一个对象
                2.抛出异常,结束程序(比较常见)

             */
            return null;
        }


        // 求最大值,首先假设第一个元素是最大值,让它逐一的和后面的元素去比较,相当于打擂台
        int max = arr[0];
        // 遍历数组,逐一比较
        for (int element : arr) {
            // 如果元素更大,就成为新的最大值
            if (element > max){
                max = element;
            }
        }
        return max;
    }

    // 求最小值
    public static int getMinValue(int[] arr) {
        // 求最小值,首先假设第一个元素是最小值,让它逐一的和后面的元素去比较,相当于打擂台
        int min = arr[0];
        // 遍历数组,逐一比较
        for (int i = 1; i < arr.length; i++) {
            // 如果其他元素更小,就成为新的最小值
            if (arr[i] < min){
                min = arr[i];
            }
        }
        return min;
    }

}
